home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / level1 / anims next >
Text File  |  1997-11-28  |  9KB  |  670 lines

  1.  
  2. brightanim:
  3.  
  4.  move.l branimpt,a0
  5.  move.w (a0),d0
  6.  move.w d0,ZoneDat24+6
  7.  sub.w #10,d0
  8.  asr.w #1,d0
  9.  add.w #10,d0
  10.  move.w d0,ZoneDat23+6
  11.  move.w d0,ZoneDat23+6
  12.  
  13.  sub.w #1,branimcount
  14.  bgt.s nonextbr
  15.  adda.w #4,a0
  16.  cmp.l #endbranim,a0
  17.  blt.s notrestartbr
  18.  move.l #branim,a0
  19. notrestartbr
  20.  move.l a0,branimpt
  21.  move.w 2(a0),branimcount
  22. nonextbr:
  23.  
  24.  rts
  25.  
  26. branimpt: dc.l branim
  27. branimcount: dc.w 0
  28.  
  29. branim:
  30.  dc.w 10,1
  31.  dc.w -15,1
  32.  dc.w 10,3
  33.  dc.w -15,1
  34.  dc.w 10,4
  35.  dc.w -15,1
  36.  dc.w 10,1
  37.  dc.w -15,2
  38.  dc.w 10,2
  39.  dc.w -8,1
  40.  dc.w 10,1
  41.  dc.w -5,1
  42.  dc.w 10,2
  43.  dc.w -15,1
  44.  dc.w 10,2
  45.  
  46. endbranim
  47.  
  48. objvels: ds.l 8
  49.  
  50. PlayerZone: dc.w 0
  51.  
  52. objmoveanim:
  53.  
  54.  move.l Roompt,a0
  55.  move.w (a0),PlayerZone
  56.  
  57. ; bsr brightanim
  58.  bsr PlayerShot
  59. ; bsr Nasties
  60. ; bsr CheckPickups
  61.  bsr ObjectHandler
  62.  rts
  63.  
  64. GotBigGun: dc.w 0
  65.  
  66. GunDamage:
  67.  dc.w 0
  68.  
  69. rotcount:
  70.  dc.w 0
  71.  
  72. shotvels: ds.l 20
  73.  
  74. clicked: dc.w 0
  75. popping: ds.l 5*4
  76.  
  77. GunNoise: dc.w 1
  78.  
  79. PlayerShot:
  80.  
  81.  tst.b clicked
  82.  bne pressedfire
  83.  
  84.  rts
  85.  
  86. tempangpos: dc.w 0
  87.  
  88. pressedfire:
  89.  
  90.  move.w angpos,tempangpos
  91.  move.w #0,d7
  92.  move.w #256,d6
  93.  move.w #256,d5
  94.  
  95. firefive:
  96.  
  97.  move.l #PlayerShotData,a0
  98.  move.w #19,d1
  99. findonefree
  100.  move.w 12(a0),d0
  101.  blt.s foundonefree
  102.  adda.w #32,a0
  103.  dbra d1,findonefree
  104.  
  105.  rts
  106.  
  107. foundonefree:
  108.  
  109.  move.w #0,Noisex
  110.  move.w #0,Noisez
  111.  move.w #50,Noisevol
  112.  move.w GunNoise,Samplenum
  113.  move.b #2,chanpick
  114.  clr.b notifplaying
  115.  move.b GotBigGun,shotsize(a0)
  116.  move.b GunDamage,shotpower(a0)
  117.  movem.l a0/d5/d6/d7,-(a7)
  118.  jsr MakeSomeNoise
  119.  movem.l (a7)+,a0/d5/d6/d7
  120.  
  121.  move.l #ObjectPoints,a1
  122.  move.w (a0),d1
  123.  lea (a1,d1.w*4),a1
  124.  move.w xoff,(a1)
  125.  move.w zoff,2(a1)
  126.  move.w tempangpos,d0
  127.  and.w #8191,d0
  128.  move.l #SineTable,a2
  129.  adda.w d0,a2
  130.  move.w (a2),d0
  131.  ext.l d0
  132.  asl.l #7,d0
  133.  swap d0
  134.  move.w d0,shotxvel(a0)
  135.  move.w 2048(a2),d0
  136.  ext.l d0
  137.  asl.l #7,d0
  138.  swap d0
  139.  move.w d0,shotzvel(a0)
  140.  move.l Roompt,a2
  141.  move.w (a2),12(a0)
  142.  move.l 2(a2),d0
  143.  asr.l #7,d0
  144.  add.w #50,d0
  145.  move.w d0,4(a0)
  146.  
  147.  add.w d6,tempangpos
  148.  neg.w d6
  149.  neg.w d5
  150.  add.w d5,d6
  151.  
  152.  dbra d7,firefive
  153.  
  154.  rts
  155.  
  156. duh: dc.w 0
  157. double: dc.w 0
  158. ivescreamed: dc.w 0
  159.  
  160. ObjectHandler:
  161.  
  162.  move.l #ObjectData,a0
  163. Objectloop:
  164.  tst.w (a0)
  165.  blt.s doneallobj
  166.  
  167.  cmp.b #0,16(a0)
  168.  bne.s notnasty
  169.  bsr ItsANasty
  170. notnasty:
  171.  cmp.b #1,16(a0)
  172.  bne.s notmedi
  173.  bsr ItsAMediKit
  174. notmedi:
  175.  cmp.b #2,16(a0)
  176.  bne.s notbullet
  177.  bsr ItsABullet
  178. notbullet:
  179.  cmp.b #3,16(a0)
  180.  bne.s notbiggun
  181.  bsr ItsABigGun
  182. notbiggun:
  183.  
  184.  adda.w #32,a0
  185.  bra Objectloop
  186.  
  187. doneallobj:
  188.  
  189.  
  190. ItsANasty:
  191.  
  192.  tst.b 17(a0)
  193.  beq NasType1
  194.  rts
  195.  
  196. NasType1:
  197.  
  198.  tst.w 12(a0)
  199.  blt notthisone
  200.  
  201.  clr.b ivescreamed
  202.  tst.b numlives(a0)
  203.  bgt.s itsaround
  204.  move.b #0,numlives(a0)
  205.  move.w #-1,12(a0)
  206.  bra notthisone
  207.  
  208. itsaround:
  209.  
  210.  move.w 4(a0),d0
  211.  cmp.w targheight(a0),d0
  212.  beq.s rightheight
  213.  bgt.s goingdown
  214.  add.w #16,d0
  215. goingdown:
  216.  subq #8,d0
  217. rightheight:
  218.  move.w d0,4(a0)
  219.  
  220.  move.b damagetaken(a0),d2
  221.  beq.s okrunaround
  222.  
  223. * I've been shot!
  224.  
  225.  st ivescreamed
  226.  
  227.  sub.b d2,numlives(a0)
  228.  sub.w #20,currspd(a0)
  229.  move.b #0,damagetaken(a0)
  230.  
  231. okrunaround:
  232.  
  233.  move.w (a0),d0
  234.  
  235.  move.l #ObjectPoints,a1
  236.  lea (a1,d0.w*4),a1
  237.  move.l (a1),oldx
  238.  move.w xoff,newx
  239.  move.w zoff,newz
  240.  move.w currspd(a0),d2
  241.  cmp.w maxspd(a0),d2
  242.  blt.s tooslow
  243.  beq.s notoofast
  244.  subq #6,d2
  245. tooslow:
  246.  addq #4,d2
  247. notoofast:
  248.  move.w d2,currspd(a0)
  249.  move.w d2,speed
  250.  move.w #40,Range
  251.  move.w 12(a0),d2
  252.  move.l #ZoneAdds,a5
  253.  move.l (a5,d2.w*4),objroom
  254.  movem.l a0/a1/a3/a4/d7,-(a7)
  255.  jsr HeadTowards
  256.  Jsr MoveObject
  257.  movem.l (a7)+,a0/a1/a3/a4/d7
  258.  
  259.  tst.b GotThere
  260.  beq.s NotEating
  261.  
  262.  movem.l d0-d7/a0-a6,-(a7)
  263.  sub.l #ObjectPoints,a1
  264.  add.l a1,a1
  265.  add.l #ObjRotated,a1
  266.  move.l (a1),Noisex
  267.  move.w #200,Noisevol
  268.  move.w #2,Samplenum
  269.  move.b #3,chanpick
  270.  st notifplaying
  271.  st backbeat
  272.  jsr MakeSomeNoise
  273.  sub.w #1,Energy
  274.  movem.l (a7)+,d0-d7/a0-a6
  275.  
  276. NotEating:
  277.  
  278.  move.l objroom,a2
  279.  
  280.  tst.b ivescreamed
  281.  bne.s screamanyway
  282.  
  283.  move.w (a2),d0
  284.  cmp.w 12(a0),d0
  285.  beq.s nochangeroom
  286.  move.l #Objects+4096*5,8(a0)
  287.  cmp.l Roompt,a2
  288.  bne.s nochangeroom
  289.  
  290.  move.w #40,currspd(a0)
  291. screamanyway:
  292.  
  293.  move.l #Objects+4096*6,8(a0)
  294.  movem.l d0-d7/a0-a6,-(a7)
  295.  sub.l #ObjectPoints,a1
  296.  add.l a1,a1
  297.  add.l #ObjRotated,a1
  298.  move.l (a1),Noisex
  299.  move.w #200,Noisevol
  300.  move.w #0,Samplenum
  301.  move.b #1,chanpick
  302.  clr.b notifplaying
  303.  st backbeat
  304.  jsr MakeSomeNoise
  305.  movem.l (a7)+,d0-d7/a0-a6
  306.  
  307. nochangeroom:
  308.  
  309.  move.w (a2),12(a0)
  310.  move.w 6(a2),2(a0)
  311.  move.l 2(a2),d0
  312.  asr.l #7,d0
  313.  move.w d0,targheight(a0)
  314.  
  315.  move.w (a0),d0
  316.  move.l #ObjectPoints,a1
  317.  move.l newx,(a1,d0.w*4)
  318. notthisone:
  319.  
  320.  rts
  321.  
  322. ItsAMediKit:
  323.  
  324. HealFactor EQU 18
  325.  
  326.  move.w xoff,oldx
  327.  move.w zoff,oldz
  328.  move.w PlayerZone,d7
  329.  cmp.w 12(a0),d7
  330.  bne.s .NotSameZone
  331.  move.w (a0),d0
  332.  move.l #ObjectPoints,a1
  333.  move.l (a1,d0.w*4),newx
  334.  move.l #32*32,d2
  335.  bsr CheckHit
  336.  tst.b hitwall
  337.  beq.s .NotPickedUp
  338.  
  339.  move.w #0,Noisex
  340.  move.w #0,Noisez
  341.  move.w #50,Noisevol
  342.  move.w #4,Samplenum
  343.  move.b #2,chanpick
  344.  clr.b notifplaying
  345.  movem.l a0/a1/d2/d6/d7,-(a7)
  346.  jsr MakeSomeNoise
  347.  movem.l (a7)+,a0/a1/d2/d6/d7
  348.  
  349.  move.w #-1,12(a0)
  350.  move.w HealFactor(a0),d0
  351.  add.w d0,Energy
  352.  
  353. .NotPickedUp:
  354.  
  355. .NotSameZone:
  356.  
  357.  rts
  358.  
  359. ItsABigGun:
  360.  
  361.  move.w xoff,oldx
  362.  move.w zoff,oldz
  363.  move.w PlayerZone,d7
  364.  cmp.w 12(a0),d7
  365.  bne .NotSameZone
  366.  move.w (a0),d0
  367.  move.l #ObjectPoints,a1
  368.  move.l (a1,d0.w*4),newx
  369.  move.l #32*32,d2
  370.  bsr CheckHit
  371.  tst.b hitwall
  372.  beq.s .NotPickedUp
  373.  
  374.  move.w #0,Noisex
  375.  move.w #0,Noisez
  376.  move.w #50,Noisevol
  377.  move.w #4,Samplenum
  378.  move.b #2,chanpick
  379.  clr.b notifplaying
  380.  movem.l a0/a1/d2/d6/d7,-(a7)
  381.  jsr MakeSomeNoise
  382.  movem.l (a7)+,a0/a1/d2/d6/d7
  383.  
  384.  move.l #Cheese,FacesPtr
  385.  move.b #5,GunDamage
  386.  st GotBigGun
  387.  move.w #1,GunNoise
  388.  
  389.  move.w #-1,12(a0)
  390.  
  391. .NotPickedUp:
  392.  
  393. .NotSameZone:
  394.  
  395.  rts
  396.  
  397. ItsABullet:
  398.  
  399.  
  400.  tst.b shotsize(a0)
  401.  beq.s ItsASmallBullet
  402.  bra ItsABigBullet
  403.  
  404. ItsASmallBullet
  405.  
  406.  move.w 12(a0),d0
  407.  blt doneshot
  408.  
  409.  move.w #50*128,6(a0)
  410.  
  411.  move.l #ObjectPoints,a1
  412.  move.w (a0),d1
  413.  lea (a1,d1.w*4),a1
  414.  
  415.  move.l #Objects+4096*11+32,8(a0)
  416.  
  417.  move.w (a1),d2
  418.  move.w d2,oldx
  419.  add.w shotxvel(a0),d2
  420.  move.w d2,newx
  421.  move.w 2(a1),d2
  422.  move.w d2,oldz
  423.  add.w shotzvel(a0),d2
  424.  move.w d2,newz
  425.  move.l #ZoneAdds,a2
  426.  move.l (a2,d0.w*4),objroom
  427.  movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
  428.  jsr MoveObject
  429.  movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
  430.  tst.b hitwall
  431.  beq.s nothitwall
  432.  
  433.  move.w #-1,12(a0)
  434.  
  435.  bra doneshot
  436.  
  437.  rts
  438.  
  439. nothitwall:
  440.  
  441.  move.l objroom,a3
  442.  move.w (a3),12(a0)
  443.  move.w newx,(a1)
  444.  move.w newz,2(a1)
  445. ************ 
  446. * Check if hit a nasty
  447.  
  448.  move.l (a1),oldx
  449.  
  450.  move.l #ObjectPoints,a1
  451.  move.l #ObjectData,a3
  452. checkloop:
  453.  tst.w (a3)
  454.  blt checkedall
  455.  tst.w 12(a3)
  456.  blt.s notanasty
  457.  cmp.b #0,16(a3)
  458.  bne.s notanasty
  459.  move.w (a3),d1
  460.  move.l (a1,d1.w*4),newx
  461.  move.l #60*60,d2
  462.  jsr CheckHit
  463.  tst.b hitwall
  464.  beq.s stillgoing
  465.  add.b #1,damagetaken(a3)
  466.  move.w #-1,12(a0)
  467.  bra hitnasty
  468. stillgoing:
  469. notanasty:
  470.  add.w #32,a3
  471.  bra checkloop
  472. hitnasty:
  473. checkedall:
  474.  
  475.  rts
  476.  
  477. ItsABigBullet:
  478.  
  479.  move.w 12(a0),d0
  480.  blt doneshot
  481.  
  482.  tst.b shotstatus(a0)
  483.  beq.s notpopping
  484.  
  485.  move.l #Objects+4096*7,a1
  486.  move.b #12,d0
  487.  sub.b shotstatus(a0),d0
  488.  btst #0,d0
  489.  beq.s nobot
  490.  adda.w #32,a1
  491. nobot:
  492.  asr.b #1,d0
  493.  ext.w d0
  494.  asl.w #6,d0
  495.  asl.w #5,d0
  496.  adda.w d0,a1
  497.  move.l a1,8(a0)
  498.  add.w #128*8,6(a0)
  499.  sub.w #4,4(a0)
  500.  
  501.  sub.b #1,shotstatus(a0)
  502.  bgt.s notdonepop
  503.  move.w #-1,12(a0)
  504.  clr.b shotstatus(a0)
  505. notdonepop:
  506.  
  507.  bra doneshot
  508.  
  509. notpopping:
  510.  
  511.  move.w #50*128,6(a0)
  512.  
  513.  move.l #ObjectPoints,a1
  514.  move.w (a0),d1
  515.  lea (a1,d1.w*4),a1
  516.  
  517.  move.w double,d3
  518.  move.w duh,d2
  519.  eor.w #32,d2
  520.  bne.s nonextx
  521.  add.w #64*32,d3
  522.  and.w #64*32*3,d3
  523. nonextx:
  524.  move.w d2,duh
  525.  move.w d3,double
  526.  
  527.  add.w d2,d3
  528.  move.l #Objects+4096*3,d2
  529.  ext.l d3
  530.  add.l d3,d2
  531.  move.l d2,8(a0)
  532.  
  533.  move.w (a1),d2
  534.  move.w d2,oldx
  535.  add.w shotxvel(a0),d2
  536.  move.w d2,newx
  537.  move.w 2(a1),d2
  538.  move.w d2,oldz
  539.  add.w shotzvel(a0),d2
  540.  move.w d2,newz
  541.  move.l #ZoneAdds,a2
  542.  move.l (a2,d0.w*4),objroom
  543.  movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
  544.  jsr MoveObject
  545.  movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
  546.  tst.b hitwall
  547.  beq.s .nothitwall
  548.  
  549.  move.b #11,shotstatus(a0)
  550.  move.l #Objects+4096*7,8(a0)
  551.  
  552.  bra doneshot
  553.  
  554.  rts
  555.  
  556. .nothitwall:
  557.  
  558.  move.l objroom,a3
  559.  move.w (a3),12(a0)
  560.  move.w newx,(a1)
  561.  move.w newz,2(a1)
  562. ************ 
  563. * Check if hit a nasty
  564.  
  565.  move.l (a1),oldx
  566.  
  567.  move.l #ObjectData,a3
  568.  move.l #ObjectPoints,a1
  569.  
  570. .checkloop:
  571.  tst.w (a3)
  572.  blt .checkedall
  573.  tst.w 12(a3)
  574.  blt.s .notanasty
  575.  cmp.b #0,16(a3)
  576.  bne.s .notanasty
  577.  move.w (a3),d1
  578.  move.l (a1,d1.w*4),newx
  579.  move.l #60*60,d2
  580.  jsr CheckHit
  581.  tst.b hitwall
  582.  beq.s .stillgoing
  583.  add.b #5,damagetaken(a3)
  584.  move.b #11,shotstatus(a0)
  585.  move.l #Objects+4096*7,8(a0)
  586.  bra .hitnasty
  587. .stillgoing:
  588. .notanasty:
  589.  add.w #32,a3
  590.  dbra d6,.checkloop
  591. .hitnasty:
  592. .checkedall
  593.  
  594. doneshot:
  595.  
  596.  rts
  597.  
  598. ZoneAdds:
  599.  dc.l ZoneDat0
  600.  dc.l ZoneDat1
  601.  dc.l ZoneDat2
  602.  dc.l ZoneDat3
  603.  dc.l ZoneDat4
  604.  dc.l ZoneDat5
  605.  dc.l ZoneDat6
  606.  dc.l ZoneDat7
  607.  dc.l ZoneDat8
  608.  dc.l ZoneDat9
  609.  dc.l ZoneDat10
  610.  dc.l ZoneDat11
  611.  dc.l ZoneDat12
  612.  dc.l ZoneDat13
  613.  dc.l ZoneDat14
  614.  dc.l ZoneDat15
  615.  dc.l ZoneDat16
  616.  dc.l ZoneDat17
  617.  dc.l ZoneDat18
  618.  dc.l ZoneDat19
  619.  dc.l ZoneDat20
  620.  dc.l ZoneDat21
  621.  dc.l ZoneDat22
  622.  dc.l ZoneDat23
  623.  dc.l ZoneDat24
  624.  dc.l ZoneDat25
  625.  dc.l ZoneDat26
  626.  dc.l ZoneDat27
  627.  dc.l ZoneDat28
  628.  dc.l ZoneDat29
  629.  
  630. putinbackdrop:
  631.  
  632.  move.w angpos,d5
  633.  and.w #8191,d5
  634.  muls #432,d5
  635.  divs #8192,d5
  636.  muls #160,d5
  637.  
  638.  CACHE_ON d1
  639.  
  640.  move.l frompt,a0
  641.  adda.w #104*4,a0
  642.  move.l #BackPicture,a1
  643.  add.l d5,a1
  644.  move.w #104*4,d1
  645.  move.w #2,d4
  646. allbars:
  647.  move.w #31,d3
  648. onebar:
  649.  move.w #1,d0
  650.  move.l a0,a2
  651. vertline:
  652.  REPT 20
  653.  move.w (a1)+,(a2)
  654.  adda.w d1,a2
  655.  ENDR
  656.  dbra d0,vertline
  657.  
  658.  adda.w #80,a1
  659.  
  660.  cmp.l #EndBackPicture,a1
  661.  blt.s notoffrightend
  662.  move.l #BackPicture,a1
  663. notoffrightend
  664.  
  665.  addq #4,a0
  666.  dbra d3,onebar
  667.  addq #4,a0
  668.  dbra d4,allbars
  669.  rts
  670.